<?php
namespace App\Utilitys;

use Illuminate\Http\Request;

class Upload
{
    /**
     * 上传
     */

    protected static $uploadSizeLimit = 50 * 1024 * 1023; //限制上传尺寸10M

    /**
     * APP文件上传
     */
    public static function uploadFile($file)
    {
        $fileSize = $file->getClientSize(); //文件大小
        if(!$file) {
            return array('code'=>'-1', 'msg'=>'文件不存在');
        }
        if ($fileSize > self::$uploadSizeLimit) {
            return array('code'=>'-3', 'msg'=>'文件过大');
        }
        $extension = $file->getClientOriginalExtension(); //获取后缀
        $folderName = 'uploads/'.date('Ymd',time()).'/';
        $safeName = date('YmdHis',time()).rand(10,100).'.'.$extension;
        $file->move($folderName, $safeName);
        $filePath = $folderName.$safeName;
        $dataArr = array(
            'filePath' => $filePath,
            'fileName' => $file->getClientOriginalName(),
            'fileSize' => $file->getClientSize(),
            'fileExt' => $file->getClientOriginalExtension(),
        );
        return array('code'=>'0', 'msg'=>'上传成功', 'data'=>$dataArr);
    }

    /**
     * 素材上传
     */
    public static function uploadSource($file)
    {
        $fileSize = $file->getClientSize(); //文件大小
        if(!$file) {
            return array('code'=>'-1', 'msg'=>'文件不存在');
        }
        if ($fileSize > self::$uploadSizeLimit) {
            return array('code'=>'-3', 'msg'=>'文件过大');
        }
        $extension = $file->getClientOriginalExtension(); //获取后缀
        $folderName = 'upSources/'.date('Ymd',time()).'/';
        $safeName = date('YmdHis',time()).rand(10,100).'.'.$extension;
        $file->move($folderName, $safeName);
        $filePath = '/'.$folderName.$safeName;
        $dataArr = array(
            'filePath' => $filePath,
        );
        return array('code'=>'0', 'msg'=>'上传成功', 'data'=>$dataArr);
    }

//    /**
//     * APP文件上传
//     * @return string
//     */
//    public static function uploadAppFile($files)
//    {
//        //判断图片存在
//        if($files['error']){ return ''; } //错误信息
//        if ($files['size'] > self::$uploadSizeLimit) {
//            echo "<script>alert('文件过大！');history.go(-1);</script>";exit;
//        }
//        if(!$files['name']){ return ""; } //文件名称
//        //获取文件扩展名
//        $temps = explode(".", $files["name"]);
//        $extension = end($temps);
//        //上传后需要存储的地址
//        $folderName = 'uploads/'.date('Ymd',time()).'/';
//        if (!is_dir($folderName)) {
//            //true表示能创建多级目录，iconv防止中文目录乱码
//            mkdir($folderName, 0777, true);
//        }
//        //上传后的新文件名
//        $safeName = date('YmdHis',time()).rand(10,100).'.'.$extension;
//        //上传后的地址+文件名
//        $filePath = $folderName.$safeName;
//        //上传的临时地址
//        $tmpName = $files['tmp_name'];
//        move_uploaded_file($tmpName, $filePath);
//        return '/'.$filePath;
//    }

    /**
     * WEB文件上传
     * @return string
     */
    public static function uploadWebFile($file)
    {
        $fileSize = $file->getClientSize(); //文件大小
        if ($fileSize > self::$uploadSizeLimit) {
            return array('code'=>'-3', 'msg'=>'文件过大');
        }
        $extension = $file->getClientOriginalExtension(); //获取后缀
        $folderName = 'uploads/'.date('Ymd',time()).'/';
        $safeName = date('YmdHis',time()).rand(10,100).'.'.$extension;
        $file->move($folderName, $safeName);
        $filePath = $folderName.$safeName;
        $dataArr = array(
            'filePath' => $filePath,
            'fileName' => $file->getClientOriginalName(),
            'fileSize' => $file->getClientSize(),
            'fileExt' => $file->getClientOriginalExtension(),
        );
        return array('code'=>'0', 'msg'=>'上传成功', 'data'=>$dataArr);
    }

//    /**
//     * 原生的上传
//     */
//    public static function setWebUpload($files)
//    {
//        // 判断错误号
//        if (@$files['error']>0) {
//            // 根据错误号返回提示信息
//            switch (@$files['error']) {
//                case 1:
//                    echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值";
//                    break;
//                case 2:
//                    echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值";
//                    break;
//                case 3:
//                    echo "文件只有部分被上传";
//                    break;
//                case 4:
//                    echo "没有文件被上传";
//                    break;
//                case 6:
//                case 7:
//                    echo "系统错误";
//                    break;
//            }
//        }
//        // 判断文件类型
//        $ext = strtolower(pathinfo(@$files['name'], PATHINFO_EXTENSION));
//        $exts = ['jpg', 'png', 'jpeg', 'gif', 'mp4']
//        if (!in_array($ext, $exts)) { return "非法文件类型"; }
//        // 判断是否存在上传到的目录
//        $path = 'uploads/'.date('Ymd',time()).'/';
//        if (!is_dir($path)) { mkdir($path, 0777, true); }
//        // 生成唯一的文件名
//        $fileName = md5(uniqid(microtime(true), true)) . '.' . $ext;
//        //将文件名拼接到指定的目录下
//        $destName = $path . "/" . $fileName;
//        //进行文件移动
//        if (!move_uploaded_file($files['tmp_name'], $destName)) {
//            return "文件上传失败！";
//        }
//        return "文件上传成功！";
//    }
}